/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */

package beans;

import dao.UsuarioDao;
import dao.UsuarioDaoImpl;
import java.awt.event.ActionEvent;
import static java.lang.System.out;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import javax.enterprise.context.RequestScoped;
import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.faces.context.FacesContext;
import javax.inject.Named;
import model.Rol;
import model.Usuario;

/**
 *
 * @author Alfredo
 */
@Named(value = "usuarioBean")
@ManagedBean
@RequestScoped

public class usuarioBean {

    /**
     * Creates a new instance of usuarioBean
     */
    private Usuario selectedUsuario;
    private List<Usuario> usuarios;
    private final UsuarioDaoImpl usuarioDaoImpl;
    
    public usuarioBean() {
        this.selectedUsuario = new Usuario();
        this.usuarios = new ArrayList<Usuario>();
        this.usuarioDaoImpl = new UsuarioDaoImpl();
    }

    public List<Usuario> getUsuarios() {
        UsuarioDao usuarioDao = new UsuarioDaoImpl();
        this.usuarios = usuarioDao.findAll();
        return usuarios;
    }

    public Usuario getSelectedUsuario() {
        
        return selectedUsuario;
    }

    public void setSelectedUsuario(Usuario selectedUsuario) {
        this.selectedUsuario = selectedUsuario;
    }
    
    public void btnCreateUsuario(ActionEvent actionEvent){
        UsuarioDao usuarioDao = new UsuarioDaoImpl();
        String msg;
        out.println("btnCreateUsuario getId: --------"+this.selectedUsuario.getId());
        this.selectedUsuario.setClave(this.selectedUsuario.getUsuario());
        
        this.selectedUsuario.setRol(new Rol("Admin"));
        this.selectedUsuario.setEstado(1);
        this.selectedUsuario.setUsuariocreacion("admin");
        Date hoy = new Date();
        String fecha = new SimpleDateFormat("yyyy-MM-dd").format(hoy);
        this.selectedUsuario.setFechacreacion(java.sql.Date.valueOf(fecha));
        this.selectedUsuario.setUsuariomodificacion("usu");
        this.selectedUsuario.setFechamodificacion(java.sql.Date.valueOf(fecha));
        out.println("btnCreateUsuario getId: --------"+this.selectedUsuario.getId());
        out.println("btnCreateUsuario getRol: --------"+this.selectedUsuario.getRol());
        out.println("btnCreateUsuario getUsuario: --------"+this.selectedUsuario.getUsuario());
        out.println("btnCreateUsuario getClave: --------"+this.selectedUsuario.getClave());
        out.println("btnCreateUsuario getEmail: --------"+this.selectedUsuario.getEmail());
        out.println("btnCreateUsuario getEstado: --------"+this.selectedUsuario.getEstado());
        out.println("btnCreateUsuario getUsuariocreacion: --------"+this.selectedUsuario.getUsuariocreacion());
        out.println("btnCreateUsuario getFechacreacion: --------"+this.selectedUsuario.getFechacreacion());
        out.println("btnCreateUsuario getUsuariomodificacion: --------"+this.selectedUsuario.getUsuariomodificacion());
        out.println("btnCreateUsuario getFechamodificacion: --------"+this.selectedUsuario.getFechamodificacion());
        
        out.println("this.selectedUsuario: 1 --------"+this.selectedUsuario.toString());
        if(usuarioDao.create(this.selectedUsuario)){
            out.println("btnCreateUsuario: 2.0");
            msg = "Se Creó Satisfactoriamente el Registro";
            out.println("btnCreateUsuario: 2.1");
            FacesMessage message = new FacesMessage(FacesMessage.SEVERITY_INFO, msg, null);
            out.println("btnCreateUsuario: 2.2");
            FacesContext.getCurrentInstance().addMessage(null, message);
            out.println("btnCreateUsuario: 2.3");
        }else{
            out.println("btnCreateUsuario: 3");
            msg = "Error al Crear el Registro";
            FacesMessage message = new FacesMessage(FacesMessage.SEVERITY_ERROR, msg, null);
            FacesContext.getCurrentInstance().addMessage(null, message);
        }

    }
    
    public void btnUpdateUsuario(ActionEvent actionEvent){
        UsuarioDao usuarioDao = new UsuarioDaoImpl();
        String msg;
        if(usuarioDao.update(this.selectedUsuario)){
            msg = "Se Modificó Satisfactoriamente el Registro.";
        }else{
            msg = "Error al Modificar el Registro.";
        }
        FacesMessage message = new FacesMessage(FacesMessage.SEVERITY_INFO, msg, null);
        FacesContext.getCurrentInstance().addMessage(null, message);
    }
    
    public void btnDeleteUsuario(ActionEvent actionEvent){
        UsuarioDao usuarioDao = new UsuarioDaoImpl();
        String msg;
        if(usuarioDao.delete(this.selectedUsuario.getId())){
            msg = "Se Eliminó Satisfactoriamente el Registro";
        }else{
            msg = "Error al Eliminar el Registro";
        }
        FacesMessage message = new FacesMessage(FacesMessage.SEVERITY_INFO, msg, null);
        FacesContext.getCurrentInstance().addMessage(null, message);
    }
}
